package design.strategy;

public class Test {
    public static void main(String[] args) {
        // 针对人类的行为作了封装类，这里我们制造一个行为类对象，用来执行人类的行为
        HumanAction action = new HumanAction();
        // 行为对象是有了，具体是针对哪一个人类对象呢？这里我们创建一个女人
        Human women = new Woman();
        // 将人类行为跟人类装配
        action.setHuman(women);
        // 行为操作
        action.goPee();// 去上厕所
        System.out.println("---------------");
        action.setHuman(new Man()); // 也可以装配一个男人
        action.goPee();// 去上厕所
        System.out.println("------------");
        Human baby =  new Human() {
            // 这里是一个小宝宝
            @Override
            public void sleep() {
                System.out.println("睡呀睡睡睡睡.........");
            }
            @Override
            public void pee() {
                System.out.println("尿不湿...或者被抱起来嘘嘘......");
            }
        };
        action = new HumanAction(baby) {
            @Override
            public void goPee() {
                System.out.println("哭.....吵");
                // 如果用human,human不能用private修饰
                human.pee();// 用baby.pee()也是一样
                System.out.println("哭.....吵");
            }
            @Override
            public void goSleep() {
                System.out.println("妈妈怀里，真暖和");
                human.sleep();
            }
        };
        action.goPee();
    }
}
